package com.yanyu.space.common.log.message.pool;

import com.yanyu.space.common.log.message.BatchLogMessage;
import com.yanyu.space.common.log.message.LogMessage;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * @author yanyu
 */
public class LogMessagePool {

    private Map<String, BatchLogMessage> logPools = new ConcurrentHashMap<>();

    /**
     * 获取
     *
     * @param traceId
     * @return
     */
    public BatchLogMessage get(String traceId) {
        return logPools.get(traceId);
    }

    /**
     * 追加
     *
     * @param traceId
     * @param logMessage
     */
    public void put(String traceId, LogMessage logMessage) {
        if (!logPools.containsKey(traceId)) {
            logPools.put(traceId, new BatchLogMessage());
        }
        BatchLogMessage batchLogMessage = logPools.get(traceId);
        batchLogMessage.add(logMessage);
    }

    /**
     * 移除
     *
     * @param traceId
     */
    public void remove(String traceId) {
        if (logPools.containsKey(traceId)) {
            logPools.remove(traceId);
        }
    }

    /**
     * @description 容量
     */
    public int capacity() {
        return logPools.keySet().size();
    }
}
